<?php

namespace common\traits;

use Yii;
use common\helpers\ArrayHelper;

/**
 * 自定义数据模型Trait
 *
 * @author emhome <emhome@163.com>
 * @since 1.0
 */
trait DataPierces {

    /**
     * @var mixed 自定义数据内容 
     */
    public static $_pierces;

    /**
     * 设置自定义数据内容
     * @param mixed $pierces 数据内容
     */
    public static function setPierces($pierces) {
        static::$_pierces = $pierces;
    }

    /**
     * 获取自定义数据内容
     * @param string $key 索引键
     * @param mixed $default 默认数据内容
     * @return mixed
     */
    public static function getPierces($key = null, $default = null) {
        $data = static::$_pierces;
        if ($key !== null) {
            return ArrayHelper::getValue($data, $key, $default);
        }
        return $data;
    }

    /**
     * 获取相关自定义数据内容
     * @param string $relation 关联模型
     * @param mixed $attribute 默认数据内容
     * @param mixed $default 默认数据内容
     * @return mixed
     */
    public static function getRelativeAttribute($relation, $attribute = null, $default = null) {
        if (static::$_pierces) {
            $relation = static::$_pierces;
            return static::getPierces($attribute, $default);
        }
        if (empty($relation)) {
            return $default;
        }
        $model = static::instance();
        if (is_string($relation) && $model->hasProperty($relation)) {
            $relation = $model->$relation;
        }
        static::setPierces($relation);
        return static::getPierces($attribute, $default);
    }

}
